package cn.anecansaitin.whimsy.common.register;

import cn.anecansaitin.whimsy.Whimsy;
import cn.anecansaitin.whimsy.common.entity.*;
import cn.anecansaitin.whimsy.common.entity.ow.SeismicSlamWave;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;
import net.neoforged.neoforge.registries.DeferredHolder;
import net.neoforged.neoforge.registries.DeferredRegister;

public class ModEntities {
    public static final DeferredRegister<EntityType<?>> ENTITIES = DeferredRegister.create(Registries.ENTITY_TYPE, Whimsy.MODID);

    public static final DeferredHolder<EntityType<?>, EntityType<DioriteMissile>> DIORITE_MISSILE = ENTITIES.register("diorite_missile", () -> EntityType.Builder.of((EntityType.EntityFactory<DioriteMissile>) DioriteMissile::new, MobCategory.MISC).sized(0.2f, 0.2f).clientTrackingRange(4).updateInterval(20).build("diorite_missile"));
    public static final DeferredHolder<EntityType<?>, EntityType<WeaponSwingCollision>> WEAPON_SWING_COLLISION = ENTITIES.register("weapon_swing_collision", () -> EntityType.Builder.of(WeaponSwingCollision::new, MobCategory.MISC).sized(0.2f, 0.2f).clientTrackingRange(4).updateInterval(20).build("weapon_swing_collision"));
    public static final DeferredHolder<EntityType<?>, EntityType<StoneSpike>> STONE_SPIKE = ENTITIES.register("stone_spike", () -> EntityType.Builder.of((EntityType.EntityFactory<StoneSpike>) StoneSpike::new, MobCategory.MISC).sized(0.7f, 1f).clientTrackingRange(6).updateInterval(2).build("stone_spike"));
    public static final DeferredHolder<EntityType<?>, EntityType<PhantasmArrow>> PHANTASM_ARROW = ENTITIES.register("phantasm_arrow", () -> EntityType.Builder.of((EntityType.EntityFactory<PhantasmArrow>) PhantasmArrow::new, MobCategory.MISC).sized(0.5F, 0.5F).clientTrackingRange(5).updateInterval(1).build("phantasm_arrow"));
    public static final DeferredHolder<EntityType<?>, EntityType<LightBullet>> LIGHT_BULLET = ENTITIES.register("light_bullet", () -> EntityType.Builder.of((EntityType.EntityFactory<LightBullet>) LightBullet::new, MobCategory.MISC).sized(0.2f, 0.2f).clientTrackingRange(5).build("light_bullet"));
    public static final DeferredHolder<EntityType<?>, EntityType<SeismicSlamWave>> SEISMIC_SLAM_WAVE = ENTITIES.register("seismic_slam_wave", () -> EntityType.Builder.of((EntityType.EntityFactory<SeismicSlamWave>) SeismicSlamWave::new, MobCategory.MISC).sized(0.25f, 0.1f).clientTrackingRange(5).build("seismic_slam_wave"));
}